In computer network communications, a sockets model may be used, in which the communication between two of the computers of the network is conceptually considered as taking place between two endpoints, or sockets. Typical sockets programs utilize a client/server approach to communications, in which a provider of a needed service is available to service requests from a client as the client needs them. In this model, the client creates a socket and establishes a connection to the server (assuming the server accepts) on a server-side socket. The client then communicates via the connection, using a communications protocol that the server supports. The client application closes the socket to terminate the connection when finished with the particular communication.
Although this model works very well, there is a substantial amount of overhead required to open a socket and establish a connection, and even more overhead when a secure connection is required. In general, the overhead results from some required handshaking, in which the client and server authenticate one another to some extent, depending on the level of security desired for this communication.
While this overhead is simply an accepted computing cost in many computing environments, in large networks having substantial numbers of transmissions flowing both ways, the amount of sockets-related overhead can lead to problems. For example, in a large network having thousands of machines, many events, alerts and performance monitoring data need to be transmitted, along with conventional network traffic to handle web page serving, file serving, web services, and so forth. In such networks, existing methods of data transmission can only scale to networks having machines numbering in the hundreds, in part because of sockets-related overhead.
As can be appreciated, any reduction in the amount of sockets-related overhead would be beneficial in improving network scalability.